Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Проблема синхронізації потоків в C#

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
ЗІ
Кафедра:
Не вказано

Інформація про роботу

Рік:
2014
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Операційні системи

Частина тексту файла

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА кафедра БІТ З В І Т до лабораторної роботи №5 з курсу: «ОПЕРАЦІЙНІ СИСТЕМИ» на тему: «Проблема синхронізації потоків в C#» Мета: ознайомлення з методами вирішення проблеми синхронізації потоків в C#, отримання практичних навичок виправлення помилок синхронізації в багатопотокових застосуваннях, створених на платформі .NET. Проблеми синхронізації і організації паралельних обчислень є одними з найскладніших у практичному програмуванні. Короткі теоретичні відомості: Необхідність організації паралельного виконання потоків, що взаємодіють, потребує наявності механізмів обміну даними між ними і забезпечення їхньої синхронізації. Під час взаємодії потоків (процесів) можуть виникнути конкурентні дії зі спільними даними. Так існують ситуації в яких 2 і більше потоки читають або записують дані одночасно і при цьому кінцевий результат залежить від того, який з них був першим. Така ситуація називається «станом змагань» або «гонок». Блокування. Раціональнішим розв'язанням є використання блокувань (locks). Блокування — це механізм, який не дозволяє більш як одному потокові виконувати код критичної секції. Використання блокування зводиться до двох дій: запровадження (заблокування, функція acqui ге_lоск()) і зняття блокування (розблокування, функція release_lock()). У разі заблокування перевіряють, чи не було воно вже зроблене іншим потоком, і якщо це так, цей потік переходить у стан очікування, інакше він запроваджує блокування і входить у критичну секцію. Після виходу із критичної секції потік знімає блокування. Завдання: Побудувати алгоритм програми, яка вирішує завдання оптимізації виконання певних операцій над матрицями з використанням багато потоковості, синхронізувати потоки. Завдання наведені в таблиці відповідно до варіанту. № вар. Кількість потоків Завдання  1 3 Сума 2-х матриць (3х3).   Текст програми: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using ConsoleApplication1; namespace ConsoleApplication1 { class ThreadClass { Random qr = new Random(); int[,] a = new int[3, 3]; int[,] b = new int[3, 3]; int[,] c = new int[3, 3]; public void thread1() { int i = 0; { for (int j = 0; j <= 2; j++) { a[i, j] = qr.Next(0, 11); } } int x = 0; { for (int y = 0; y <= 2; y++) { b[x, y] = qr.Next(11, 22); } } } public void thread2() { int i = 1; { for (int j = 0; j <= 2; j++) { a[i, j] = qr.Next(0, 11); } } int x = 1; { for (int y = 0; y <= 2; y++) { b[x, y] = qr.Next(11, 22); } } } public void thread3() { int i = 2; { for (int j = 0; j <= 2; j++) { a[i, j] = qr.Next(0, 11); } } int x = 2; { for (int y = 0; y <= 2; y++) { b[x, y] = qr.Next(11, 22); } } } public void ShowMasA() { for (int i = 0; i <= 2; i++) { for (int j = 0; j <= 2; j++) { Console.Write("{0} ", a[i, j]); } Console.WriteLine(); } Console.WriteLine(); } public void ShowMasB() { for (int x = 0; x <= 2; x++) { for (int y = 0; y <= 2; y++) { ...
Антиботан аватар за замовчуванням

12.06.2015 19:06

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини